package com.winbomb.kingcard;

import java.util.List;

/**
 * 牌堆的接口类
 * 
 * @author winbomb
 * 
 */

public interface ICardPile {

	/**
	 * 初始化牌堆
	 */
	public void initPile();

	/**
	 * 抽取一张牌
	 * 
	 * @return
	 */
	public ICard drawCard() throws NoMoreCardException;

	/**
	 * 获得牌堆顶部的牌(只是查看,不抽取)
	 * 
	 * @return
	 */
	public ICard getTopCard() throws NoMoreCardException;

	/**
	 * 重新洗牌：把抽牌堆和弃牌堆重新洗之后合并为抽牌堆。
	 */
	public void shuffle();

	/**
	 * 获取牌堆牌的数量（包括弃牌堆和抽牌堆）
	 * 
	 * @return
	 */
	public int getTotalCardCount();

	/**
	 * 获取抽牌堆牌的数量
	 * 
	 * @return
	 */
	public int getDrawCardCount();

	/**
	 * 获得抽牌堆的牌
	 * 
	 * @return
	 */
	public ICard[] getDrawCards();

	/**
	 * 获得弃牌堆的牌的数量
	 * 
	 * @return
	 */
	public int getDiscardCardCount();

	/**
	 * 获取弃牌堆
	 * 
	 * @return
	 */
	public ICard[] getDiscardCards();

	/**
	 * 收回弃牌
	 * 
	 * @param card
	 */
	public void takeBack(ICard card);

	public void takeBack(ICard[] card);

	public void takeBack(List<ICard> cards);

}
